SPDX-FileCopyrightText: 2022 Benjamin Tousch SPDX-FileCopyrightText: 2024 AlICe laboratory https://alicelab.be
SPDX-License-Identifier: GPL-3.0-or-later
Wolfgang Amadeus Mozart: Musikalisches Würfelspiel import bpy #blender
import random #random
listPiecePossible = [‘Peripherie Tempietto Sol’,’Peripherie Tempietto Middle’,’Peripherie Tempietto Toit’,’Angle Savoye Middle’] #liste fragments bpy.ops.object.select_all(action=’SELECT’) #selectionner tout for piece in listPiecePossible: bpy.data.objects[piece].select_set(False) #déselectionne les pièces qui sont dans la liste bpy.ops.object.delete() #supprime le reste bpy.ops.outliner.orphans_purge() #purge
listAdress = []
for z in range (3): #coordonnées en z allant de 1 à 3 for y in range (3): #coordonnées en y allant de 1 à 3 for x in range (3): #coordonnées en z allant de 1 à 3 listAdress.append((x,y,z)) #ajouter valeur (x,y,z) à la liste
print(listAdress)
for adress in listAdress: #on nomme la valeur ‘adress’ dans la liste ‘listadress’ bpy.ops.object.select_all(action=’DESELECT’)
if adress[2] == 3: #tous les valeur z=3
pieceChoisi = 'Peripherie Tempietto Toit' #on aura un toit
elif adress
elif adress[0] == 3 and adress[1] == 0:
pieceChoisi = 'Peripherie Tempietto Middle'
else:
pieceChoisi = random.choice(listPiecePossible) #reste choisi au hasard
bpy.data.objects[pieceChoisi].select_set(True) #les pièces choisis
bpy.ops.object.duplicate(linked=True) #sont duppliquées à partir d'une unité
bpy.ops.transform.translate(value=adress) #puis translater sur le maillage en fonction de la valeur 'adress'
import bpy # Importation de blender
import random # Importation de randomPièces de coin pour chaque étage (chaque liste est un étage)
list_angle_toit = [
"Angle Rotonda Toit",
"Angle Savoye Toit",
"Angle Pompidou Toit",
"Angle Savoye Toit 2",
"Angle Pompidou Toit 2",
]
list_angle_middle = [
"Angle Rotonda Middle",
"Angle Savoye Middle",
"Angle Pompidou Middle",
"Angle Savoye Middle 2",
"Angle Pompidou Middle 2",
]
list_angle_sol = [
"Angle Rotonda Sol",
"Angle Savoye",
"Angle Pompidou Sol",
"Angle Pompidou Sol 2",
]Pièces de périphérie pour chaque étage (chaque liste est un étage)
list_peripherie_toit = [
"Peripherie Rotonda Toit",
"Peripherie Savoye Toit",
"Peripherie Pompidou Toit",
"Peripherie Savoye Toit 2",
"Peripherie Pompidou Toit 2",
]
list_peripherie_middle = [
"Peripherie Rotonda Middle",
"Peripherie Savoye Middle",
"Peripherie Pompidou Middle",
"Peripherie Savoye Middle 2",
"Peripherie Pompidou Middle 2",
]
list_peripherie_sol = [
"Peripherie Rotonda Sol",
"Peripherie Savoye Sol",
"Peripherie Pompidou Sol",
"Peripherie Savoye Sol 2",
"Peripherie Pompidou Sol 2",
]Pièces intérieur pour chaque étage (chaque liste est un étage)
list_interieur_toit = (
[
"Interieur Rontonda Toit",
"Interieur Savoye Toit",
"Interieur Pompidou Toit",
"Interieur Savoye Toit 2",
"Interieur Pompidou Toit 2",
],
)
list_interieur_middle = (
[
"Interieur Rontonda Middle",
"Interieur Savoye Middle",
"Interieur Pompidou Middle",
"Interieur Savoye Middle 2",
"Interieur Pompidou Middle 2",
],
)
list_interieur_sol = [
"Interieur Rontonda Toit",
"Interieur Savoye Toit",
"Interieur Pompidou Toit",
"Interieur Savoye Toit 2",
"Interieur Pompidou Toit 2",
]
bpy.ops.object.select_all(action="SELECT") # Selectionner tout
for etage in list_angle_toit:
for piece in etage:
bpy.data.objects[piece].select_set(
False
) # Déselectionne les pièces qui sont dans la liste
for etage in list_angle_middle:
for piece in etage:
bpy.data.objects[piece].select_set(
False
) # Déselectionne les pièces qui sont dans la liste
for etage in list_angle_sol:
for piece in etage:
bpy.data.objects[piece].select_set(
False
) # Déselectionne les pièces qui sont dans la liste
bpy.ops.object.select_all(action="SELECT") # Selectionner tout
for etage in list_peripherie_toit:
for piece in etage:
bpy.data.objects[piece].select_set(
False
) # Déselectionne les pièces qui sont dans la liste
for etage in list_peripherie_middle:
for piece in etage:
bpy.data.objects[piece].select_set(
False
) # Déselectionne les pièces qui sont dans la liste
for etage in list_interieur_middle:
for piece in list_interieur_toit:
bpy.data.objects[piece].select_set(
False
) # Déselectionne les pièces qui sont dans la liste
bpy.ops.object.select_all(action="SELECT") # Selectionner tout
for etage in list_interieur_sol:
for piece in etage:
bpy.data.objects[piece].select_set(
False
) # Déselectionne les pièces qui sont dans la liste
for etage in list_peripherie_middle:
for piece in etage:
bpy.data.objects[piece].select_set(
False
) # Déselectionne les pièces qui sont dans la liste
for etage in list_peripherie_sol:
for piece in etage:
bpy.data.objects[piece].select_set(
False
) # Déselectionne les pièces qui sont dans la liste
bpy.ops.object.delete() # Supprime le reste
bpy.ops.outliner.orphans_purge() # Purge
for z in range(3): # Coordonnées en z allant de 1 à 3
for y in range(3): # Coordonnées en y allant de 1 à 3
for x in range(3): # Coordonnées en z allant de 1 à 3
if (x == 0 and (y == 0 or y == 2)) or (
x == 2 and (y == 0 or y == 2)
): # Chaque coordonnée de coin
piece = random.choice(
listCornerPieces[z]
) # On choisit une pièce au hasard dans les pièces de coin au bon étage
if (y == 1 and (x == 0 or x == 2)) or (
x == 1 and (y == 0 or y == 2)
): # Chaque coordonnée de périphérie
piece = random.choice(
listPeripheryPieces[z]
) # On choisit une pièce au hasard dans les pièces de périphérie au bon étage
if x == 1 and y == 1: # Chaque coordonnée intérieur
piece = random.choice(
listInteriorPieces[z]
) # On choisit une pièce au hasard dans les pièces intérieures au bon étage
bpy.data.objects[piece].select_set(True) # Les pièces choisis
bpy.ops.object.duplicate(
linked=True
) # Sont duppliquées à partir d'une unité
bpy.ops.transform.translate(
value=(x, y, z)
) # Puis translater sur le maillage en fonction de la valeur 'adress'